/**
 * Copyright (c) 2013 onionframework.org
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 */
package org.onionframework.code;

import java.util.List;

import org.onionframework.code.model.Code;
import org.onionframework.code.model.CodeType;

/**
 * @author allan
 *
 */
public interface CodeTools {

	
	/**
	 * 根据代码值和类型获取业务代码对象
	 * @param value 代码值
	 * @param type 代码类型名称
	 */
	public Code getCode(String value,String type);
	
	/**
	 * 获取指定类型的业务代码集合
	 * @param type 类型名称
	 * @return 代码集合
	 */
	public List<Code> getCodeList(String type);
	
	/**
	 * 获取对象的指定属性对应的code对象
	 */
	public Code getCode(Object object, String property, String value);
	
	/**
	 * 给对象的指定属性设置代码值
	 * @param object 目标对象
	 * @param property 属性名称
	 * @param value 代码值
	 */
	public void setCode(Object object, String property, String value);
	
	/**
	 * 根据类型对象和值获取代码对象
	 * @param value 代码值
	 * @param type 代码类型
	 */
	public Code getCode(String value, CodeType type);
}
